package com.lry.pda;

//left 用来存储继承自父节点的属性，right用来存储属于节点自己的属性。
//	在PDA解析过程中，每当一个新的解析符号压入解析堆栈时，我们同时构造一个属性对象，
//	将该对象压入属性值堆栈。在构造属性对象时，将父节点传下来的属性分别赋值给left, right两个域。
//	如果节点本身有自己的属性的话，再将自己的属性内容赋值right。

import lombok.Data;

public class Attribute {

    public KV left;
    public KV right;

    public Attribute(){}

    public Attribute(KV left, KV right) {
        this.left = left;
        this.right = right;
    }

    public static Attribute getAttribute(KV obj){
        return new Attribute(obj.copy(),obj.copy());
    }


    @Override
    public String toString() {
        return "Attribute{" +
                "left=" + left +
                ", right=" + right +
                '}';
    }

    public static class KV{
        public String key;
        public Integer value;

        public KV(){}

        public KV(String key, Integer value) {
            this.key = key;
            this.value = value;
        }

        public KV copy(){
            return new KV(this.key,this.value);
        }

        @Override
        public String toString() {
            return "KV{" +
                    "key='" + key + '\'' +
                    ", value=" + value +
                    '}';
        }
    }
}
